export default{
    //命名空间
    namespaced:true,
    state:{
        name:"购物车cart",
        carts:[]
    },
    getters:{
        total(state){
            return (state.carts.reduce((total,item)=>{
                return total += item.count * item.price
            } ,0)).toFixed(2)
        }
    },
    mutations:{
        ADC(state){
            console.log(state)
        },
        // 加入到购物车的方法
        SET_CART(state,payload){
            
            // 2.加入到cart模块中的carts数组中

            // 3.通过id,判断carts数组中如果存在这条数据，让数量+1，不存在就push到数组中
            // 使用find方法进行判断
            let target = state.carts.find(item => item.id === payload.id)
            if(target){
                //carts中有这条数据，让数量+1
                target.count++
            }else{
                //carts中没有数据，push到carts
                let obj = {
                    id :payload.id,
                    title:payload.title,
                    price:payload.price,
                    count:1
                }
                //添加到购物车数组中
                state.carts.push(obj)
            }

        },
        //让数量-1
        DECREASE_CART(state,payload){
            //通过传递过来的payload的id,对carts进行查找，查找到carts中数据的id和payload相同的，就让数据-1
            let target = state.carts.find(item => item.id === payload.id)
            if(target){
                target.count--
            }
            //判断如果数量=0，要从carts数组里过滤掉
            if(target.count===0){
                state.carts = state.carts.filter(item => item.id != payload.id)
            }
        }
    },
    actions:{
        //本项目可以不使用，使用的主要目的，是为了学会不同的模块之间，操作mutation和action
        ADD_TO_CART(context,payload){
            //1.点击加入购物车按钮，获取当前点击的这条数据

            console.log(context)
            console.log(payload)
            context.commit('SET_CART',payload)
            //触发其他模块的mutation
            context.commit('product/DECREASE_INVENTORY',payload ,{root:true})
        },
        //移除购物车
        REMOVE_CART(context,payload){
            //自己的数量-1

            //product模块中对应的数量+1
            console.log(payload)
            context.commit('DECREASE_CART',payload)

            //触发product模块中的mutation
            context.commit('product/INCREASE_INVENTORY',payload,{root:true})

        }
    }

} 